package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCActualCostReportItem;
import com.shrct.businessprocess.project.RCCost4ACTItemSnap;
import com.shrct.businessprocess.project.RCCost4RemainItemSnap;
import com.shrct.businessprocess.project.RCProject;
import com.shrct.businessprocess.project.RCProjectSummaryInfo;
import com.shrct.businessprocess.project.impl.RCActualCostReportImpl;
import com.shrct.businessprocess.project.proxy.RCActualCostReportProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCActualCostReportImpl.class)
public interface RCActualCostReport extends IModelObject {
  public abstract RCProject getProject();
  
  public abstract RCActualCostReport setProject(final RCProject project);
  
  public abstract RCProjectSummaryInfo getSummaryInfo();
  
  public abstract RCActualCostReport setSummaryInfo(final RCProjectSummaryInfo summaryInfo);
  
  public abstract RCActualCostReport getPrevReport();
  
  public abstract RCActualCostReport setPrevReport(final RCActualCostReport prevReport);
  
  public abstract Boolean getIsFixed();
  
  public abstract RCActualCostReport setIsFixed(final Boolean isFixed);
  
  public abstract Date getToDate();
  
  public abstract RCActualCostReport setToDate(final Date toDate);
  
  public abstract Double getTotalContractAmount();
  
  public abstract RCActualCostReport setTotalContractAmount(final Double totalContractAmount);
  
  public abstract Double getTotalIncomeAmount();
  
  public abstract RCActualCostReport setTotalIncomeAmount(final Double totalIncomeAmount);
  
  public abstract Double getTotalIncomePrecent();
  
  public abstract RCActualCostReport setTotalIncomePrecent(final Double totalIncomePrecent);
  
  /**
   * 累计收入比例
   */
  public abstract Double getTotalActualAmount();
  
  public abstract Double getTotalGrossProfit();
  
  public abstract Double getTotalGrossProfitRate();
  
  public abstract Double getIncomeAmount();
  
  public abstract Double getActualAmount();
  
  public abstract Double getGrossProfit();
  
  public abstract Collection<RCActualCostReportItem> getItems();
  
  public abstract RCActualCostReportItem createAndAddtoItems();
  
  public abstract RCActualCostReportItem createAndAddtoItems(final Procedure1<RCActualCostReportItem> updater);
  
  public abstract RCActualCostReport removeFromItems(final RCActualCostReportItem rCActualCostReportItem);
  
  public abstract RCActualCostReport removeAllItems();
  
  public abstract Collection<RCCost4ACTItemSnap> getAllCost4ACTItemSnaps();
  
  public abstract Collection<RCCost4RemainItemSnap> getAllCost4RemainItemSnaps();
  
  public abstract void performCalculate();
  
  public abstract Boolean isEmptyResult();
  
  public abstract RCActualCostReportProxy toProxy();
}
